package com.rambler.fileupload.service;

import com.rambler.api.fileupload.dto.FileUploadDTO;
import com.rambler.fileupload.entity.SysFileInfo;
import com.rambler.api.fileupload.vo.FileUploadVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author suhao
 */
public interface FileUploadService {
    // 上传文件, 这里不区分文件还是图片
    // 图片和文件以及excel的处理都在uploadFile根据策略模式由对应的业务处理类实现
    // 形参感觉应该将file和path暴露在外面, 这两个更常用, 其他参数放在额外处理的DTO中, 如excel处理, 图片压缩, 文本解析等
    SysFileInfo uploadFile(MultipartFile file, String path, FileUploadDTO dto);

    // 多文件上传
    List<FileUploadVO> batchUploadFile(List<MultipartFile> files, String path, FileUploadDTO dto);

    // 删除文件
    Boolean deleteFile(String fileId);

    // 获取文件信息
    FileUploadVO getFileInfo(String fileId);

    // 批量删除文件
    void deleteBatch(List<String> fileIds);

    // 判断文件是否存在
    boolean exists(String fileId);

    // 支持类型
    boolean supports(String uploadType);
}
